package com.tiancheng.trade.payment.channel.bo;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 退款数据
 *
 * @author kellen
 * @date 2024/4/19
 */
@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
public class RefundOrderBO extends BasePaymentBO {

    // 用户id
    private String uid;
    // 业务系统退款id（退款流水号）
    private String refundId;
    // 统一下单号（就是支付流水号）
    private String orderId;
    // 订单支付时间
    private LocalDateTime orderPayTime;
    // 渠道单号（支付返回的）
    private String transactionId;
    // 退款金额
    private Integer amount;
    // 订单金额
    private Integer orderAmount;
    // 退款原因
    private String reason;
    // 优惠总金额
    private Integer discount;
    // 子订单
    private List<SubOrderBO> subOrders;
    /**
     * 返还子订单平台优惠金额
     */
    private Integer refundPlatformDiscount;
    /**
     * 运营商支付渠道id
     */
    private Long orgPaymentChannelId;

    @Getter
    @Setter
    public static class SubOrderBO {
        // 子订单号
        private String subOrderId;
        // 子订单退款金额
        private Integer amount;
        // 子订单金额
        private Integer orderAmount;
        // 子订单优惠金额
        private Integer discount;
        // 业务系统子订单退款id（退款流水号）
        private String subRefundId;
        /**
         * 返还子订单平台优惠金额
         */
        private Integer refundPlatformDiscount;
    }

    /**
     * 结算信息
     */
    private List<RefundOrderSettleBO> settles;
}
